git的操作


Posted by NYBOSLA on 2020-10-20

git

git的操作原理

一個人 v.s 多人修改時

一個人在做檔案存擋及版本控制的,是否會一直把同樣檔案,複製一份修改,然後檔名就會出現像下面一樣

  • banner.html
  • banner_v2.html

硬碟裡就充斥著許多些許更改的檔案,但由於是自我管理,所以自己會知道哪個檔案是最新的,哪個檔案修改了什麼。

然而在多人管理時,會出現時間、內容的差異,可能大家都是用同一份檔案在修改,就會出現檔案名稱一樣,但內容不一樣的衝突發生,那最後又要以哪份檔案當作合併的檔案呢?這樣的情況下不僅會覆蓋掉別人辛苦寫的code,也可能導致檔案雜亂不堪。

git的存在就是為了解決這樣的內容,git的資料夾結構如下:
-master 主要檔案
-branch 在git底下可以開很多分支檔案,稱作branch,每個branch中,git會將每個branch資料夾的檔名,轉成hashes亂碼存起來,因此每份檔名都不同。

無論你在branch修改了什麼,都不會動到master的主要檔案,git可以管理好所有的版本,存在著不同進度支線的檔案,等完成後再合併起來。

git的使用流程

git init
在桌面先開一個測試資料夾 new裡面新增html,css,js等相關檔案, 打開 Terminal、將當前目錄改到 new,輸入 git init,會發現多了一個 .git 的隱藏資料夾。

git status
可看現在git的狀態
這邊畫面會顯示,檔案被分成兩個區域,分別是 Stage (有版控) 、 Untracked (沒版控)。

git add .
全部加入版本控制:
把資料夾裡面所有的檔案加入git 的版本控制

單純選擇哪些檔案加入版本控制,如下:

  • 加入版控:
    git add 檔案名稱
  • 取消版控:
    git rm —cached 檔案

git commit -m “first commit”
commit 的時候一次完成:git commit -m “要在這個檔案寫下什麼note”
也可以輸入 git commit
會進入 vim 編輯你的版本訊息 commit message
小小叮嚀,進入vim後要離開可以按 :q

覺得太麻煩也可以使用add+commit一起的語法
git commit -am “message”

git remote add origin 加上github上面的網址

git push -u origin master

git的指令

  1. git init:初始化 git。
  2. git status:git 目前版本狀態查詢。
  3. git add:git add +檔案,將檔案加入版本控制。例:git add 123,將檔案名稱123加入版本控制。
  4. git add .:一次將目前所有檔案都加入版本控制。
  5. git rm —cached:git rm —cached +檔案,將檔案移除版本控制。
  6. git commit:新建版本(就像新建一個資料夾),輸入 git commit 後就會進入到編輯器vim,在裡面可以新增 commit message (版本敘述,就像是資料夾名稱一樣),一樣是:q!或是:wq跳回。
  7. git commit –m “版本敘述”:不進入vim,直接在 terminal 新增 commit message。例:git commit –m “ first virtion”。
  8. git commit –am “版本敘述”:將所有檔案加入版本控制並建立版本(git add + git commit –m”版本敘述”)的綜合功能。
  9. git log:查看版本歷史紀錄。每個版本上方會寫commit 後面接一串英數交雜,這個就是版本(編)號。
  10. git log —oneline:查看簡單的版本歷史紀錄,此時的版本號會是簡易的前七碼。
  11. git checkout:git checkout + 完整的版本號。將版本更改到版本號的那個版本。
  12. git checkout master:將版本更改到最新的版本。
  13. .gitignore:不想要被版本控制的檔案。先用touch 建立 .gitignore 檔,再將其他不想被版本控制的檔案加入 .gitignore 檔(透過 vim .gitignore,再輸入不想被版本控制的檔名,按 :wq離開),這樣即便之後一次用 git commit –am,.gitignore 檔也不被被版本控制。
  14. git diff:再更改後的檔案再次加入版本控制前,可用 git diff 看出版本更改的東西在哪。
  15. git branch –v:確認主幹及分支。
  16. git branch + 分支名稱:新增分支並命名。
  17. git branch –d +分支名稱:刪除分支。
  18. git checkout + 分支名稱:移動到該分支。
  19. git merge +分支名稱:git merge A,將 A 分支合併進目前所在的分支。
  20. git push + 遠端主機(git hub)名稱(通常叫做 origin) + 本地分支名稱:將本地已經 commit 的版本上傳更新到 git hub。若之後有在本地新增 branch,也是一樣用此語法。
  21. git pull +遠端主機(git hub)名稱(通常叫做 origin) + 遠端分支名稱:將遠端的分支下載下來(通常發生在多人協作時,需要將別人修改過上傳到 github 的分支再次下載下來使用)。
  22. git clone +網址:將遠端的 repository 下載下來。
  23. git commit --amend:更改已經 commit 的 commit message。會進入到編輯器裡,在裡面直接更改並儲存離開。
  24. git reset HEAD^:(已經 commit)回到 commit 前的那個狀態(還保留此次修改的版本,只是尚未 commit),通常發生在 commit 後但又發現有錯需要更正內容。
  25. git reset HEAD^ --hard:(已經 commit)回到上一個版本的狀態(此次 commit 的內容完全消失)。
  26. git reset +版本號:(已經 commit )回到該版本號的狀態(等同於放棄目前最新的狀態)。
  27. git checkout --:(尚未 commit)回到上一個版本的狀態(等同於放棄此次修改的東西)。
  28. git branch –m + 新的 branch 名稱:(必須在欲修改的那個 branch 上)修改 branch 名稱。
  29. git checkout + 遠端的 branch 名稱:將遠端的branch下載下來。
  30. git diff:查看檔案與上一個版本有什麼不同

#Git







Related Posts

PHP會員管理系統 - 會員列表

PHP會員管理系統 - 會員列表

《Designing Web APIs》ch2 API Paradigms

《Designing Web APIs》ch2 API Paradigms

1731. The Number of Employees Which Report to Each Employee

1731. The Number of Employees Which Report to Each Employee


Comments